{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Sepsis Detection"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Objetivo"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A sepse é uma síndrome clínica decorrente de uma infecção associada a uma inflamação sistêmica, onde fatores patogênicos e características do hospedeiro (idade, comorbidades, genética, ambiente) determinam a gravidade e a evolução da doença.\n",
"\n",
"No Brasil, segundo o ILAS (Instituto Latino Americano da Sepse), de acordo com o seu último relatório nacional, a mortalidade por sepse é de 40%, incluindo hospitais públicos e privados. Além do impacto na mortalidade, devido à complexidade dos casos, metade dos pacientes precisam ser tratados em Unidades de Terapia Intensiva (UTI) totalizando 25% da ocupação dos leitos de UTI no Brasil, sendo a sepse uma das doenças que gera mais custos no setor público e privado da saúde no país.\n",
"\n",
"O grande problema com o diagnóstico preciso de sepse é que ele envolve a obtenção de amostras de sangue e urina do paciente, e até que sejam aferidas às quantidades relativas de lactato, leucócitos e proteína C reativa ou feita a cultura de urina, que são indicadores mais precisos de sepse, o paciente pode apresentar uma piora exponencial no seu quadro clínico.\n",
"\n",
"Trechos retirados da dissertação de mestrado de Aline Junskowski Kalil. [1]\n",
"\n",
"Kalil, A. J. (2017). Avaliação do impacto na identificação de pacientes com risco de sepse após implantação de um robô cognitivo gerenciador de riso (Robô Laura) (Master's thesis, Universidade Tecnológica Federal do Paraná)."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"id": "1CpTG2MBKlU1"
},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"np.random.seed(2021)\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"id": "0pqhlkWYLRQ-"
},
"outputs": [],
"source": [
"df_test= pd.read_csv(\"test_data_without_label.csv\")\n",
"df_train = pd.read_csv(\"training_data.csv\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "6fEMB5dJL3MD"
},
"source": [
"## Conhecendo os dados\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xBXyvTrqL7Fc"
},
"source": [
"ID \n",
"N° de Atendimento (N° do Paciente) \n",
"Temperatura \n",
"Pulso \n",
"Respiração \n",
"Pa_min (Pressão Mínima) \n",
"Pa_max (Pressão Máxima)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"id": "ZFzlc3jtLtxA",
"outputId": "3885e14f-1695-48f9-a334-1f4fa306a2ed"
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" id \n",
" num_atend \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 1 \n",
" 6066066 \n",
" 36.0 \n",
" 117.0 \n",
" NaN \n",
" 113.0 \n",
" 72.0 \n",
" 1 \n",
" \n",
" \n",
" 1 \n",
" 2 \n",
" 6019916 \n",
" 36.0 \n",
" 105.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 1 \n",
" \n",
" \n",
" 2 \n",
" 3 \n",
" 6000000 \n",
" 38.0 \n",
" 118.0 \n",
" NaN \n",
" 110.0 \n",
" 70.0 \n",
" 1 \n",
" \n",
" \n",
" 3 \n",
" 4 \n",
" 5993343 \n",
" 37.0 \n",
" 136.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 1 \n",
" \n",
" \n",
" 4 \n",
" 5 \n",
" 6001799 \n",
" 37.0 \n",
" 104.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 1 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id num_atend temperatura pulso respiracao pa_min pa_max sepse\n",
"0 1 6066066 36.0 117.0 NaN 113.0 72.0 1\n",
"1 2 6019916 36.0 105.0 NaN NaN NaN 1\n",
"2 3 6000000 38.0 118.0 NaN 110.0 70.0 1\n",
"3 4 5993343 37.0 136.0 NaN NaN NaN 1\n",
"4 5 6001799 37.0 104.0 NaN NaN NaN 1"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_train.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"id": "BiBvuZcPPdg-"
},
"outputs": [],
"source": [
"id = df_test.id #sera utilizado para prever depois\n",
"\n",
"df_train.drop(['id', 'num_atend'], axis=1, inplace= True)\n",
"\n",
"df_test.drop(['id', 'num_atend'], axis=1, inplace= True)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 284
},
"id": "h7zNVT9BO_tg",
"outputId": "47b405bd-2304-4d5e-9203-b46fa0c5f3f0"
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEICAYAAABPgw/pAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAV90lEQVR4nO3de5BcZ33m8e/jsQUYbAPRcLEkLAcERCSGJULA1rI4F4IMGEGWVGSSNTjJCqVwyG4SgtgLSwIpcAG7VBYTrSCKK5BFoYAYEcSaZTfmzqJxYi4yERkEWIMMHl/A2LAImd/+0Udw3O6ZOSN6PNbx91PVVX3O+/bbvz7d8/Q7b99SVUiSTnwnLXcBkqTxMNAlqScMdEnqCQNdknrCQJeknjDQJaknDHTdLSR5WJJbk0wswdhfSfKLYx7zsiSvHueYi7juc5PMLMd16+7NQD/BNOH03Sb8jp3OXO66flxVdW1V3a+qbl/uWsZtOcN/WJLVSd6d5IYk30ryuSQvXO66NB4nL3cBOi7nV9WH5mpMcnJVHb0rC9IJ423AZ4CzgO8BPwM8ZFkr0tg4Q++JJJXkxUn+CfinZt+zklyd5JtJPpHknFb/f5bk75N8O8lfJ9l9bBaZ5IVJPjZi/Ec05++V5PVJrk3yjSQ7ktynaTs3yUyS309yfZLrklzUGuc+Sd6Q5KvNDPFjzb61zXWc3PS7KMkXmvoOJnnRPLf94Un+T5Ibm5nnXyW5/1C3JyS5JsnNSf4iyb2by65M8rfNMbopyUeTnNS0/VSSK5u2/UmePcf1z3m8kmwFfg34w+a/qfc17duTfKm5fdckee48t+8+zSz/5iTXAE8Yaj+zmXXPJvlykpfMNVZz2cuq6raqOlpV/1BVH2iN9aTmsfLNJJ9Jcm6r7cokr0ny6ea+e2+SBzZt907y9uY++GaSfUke3LSdkeTPm8fC15K8OkuwtCagqjydQCfgK8AvjthfwP8CHgjcB3g8cD3wRGACeEFz2XsBK4CvAv8OOAV4HvB94NXNWC8EPjZi/Ec0598I7Gmu6zTgfcBrmrZzgaPAHzdjPwP4DvCApv1S4EpgVVPXP29qWttcx8lNv2cCDwcCPLUZ4/FzHJNHAE9rxpkEPgK8ceiYfR5Y09T88dZtfQ2wo6n1FOApzXWeAkwD/745Xj8PfBt4VHO5yxZxvH7Yt9X+K8CZDCZVvwrcBjx0jtv3WuCjTe1rmtsy07SdBFwFvKKp8yeBg8DT5xjrQ83t3wI8bKhtFXBjc5+d1BzTG4HJpv1K4GvATwP3Bd4NvL1pe1HzODi1uV9/Fji9absc+O/NZR4EfBp40XL/LfXxtOwFeFrkHTYIp1uBbzany5v9Bfx8q9+fAa8auuyBJhz/JXAYSKvtE10Cqgm724CHt9qeDHy5OX8u8F2aYG72XQ88qQmJ7wKPHXG71tIK9BHtlwO/2/EYPQf4h6Fjtq21/QzgS835PwbeSxO+rT5PAb4OnNTa9w7glc35y7ocr+G+89R8NbB5jraDwKbW9lZ+FOhPBK4d6v9y4C/mGOsBDJ4g9gO3N9f7hKbtZcDbhvpfAbygOX8l8NpW23rgCIMA/43mMXTO0OUfzGBp5z6tfRcAf7fcf0t9PLmGfmJ6To1eQz/UOn8W8IIkv9Pat4LBrLCAr1Xz19X4asfrnmQwC7sqybF9YfBHfcyNdcc1/O8A9wNWAvcGvrTQlSQ5D/jPwCMZPBGcCnxujr4PAv6UQQif1vS/eahb+9h8lcFxAHgd8Ergg83t2VlVr23aD1XVD4Yut2qh2rtIciHwewyeyOBHx2eUM7lz/cecBZyZ5JutfRMMZvR3UlU3A9uB7UlWAq8HLk+yuhnrV5Kc37rIKcDftbaH6zilqfttDP572N0sd70d+A/NmKcA17UeLycNjaMxcQ29X9oBfQj4k6q6f+t0alW9A7gOWJXWXxjwsNb52xgEKABJ2i+a3cBglv2Y1rhnVNX9OtR3A/D/GCylzCnJvRj8O/964MFVdX9gL4MnjlFew+C2n1NVpwO/PqLvmtb5hzH4D4Wq+nZV/X5V/SRwPvB7SX6haV9zbD29dbmvjbj++Y4X3PF+IclZwFuAi4GfaG7f5+e5fdeNqP+YQwz+O2rfz6dV1TPmGOtHRVXdwOAYn8lgOecQgxl6e6z7Nk9wxwzX8X3ghqr6flX9UVWtZ7CM9izgwmbM7wErW2OeXlWPWag+LZ6B3l9vAbYleWIG7pvkmUlOAz7JYJ37JUlOTvLLwMbWZT8DPCbJ45oXD195rKGZsb4F+K/NzJgkq5I8faGCmsvuAv5L80LeRJInNwHetoLBevgscLSZrf/SPEOfRrMMlWQV8NIRfV6cwVv2HshgXfyvm9qf1bx4GeAWBssQtwP/l0FQ/2GSU5oXB88Hdo8Ye87j1fgGg7XtY+7LIORnmxouYrAuPZd3Ai9P8oBmJt3+r+vTwC1JXta8eDqR5KeTPGHUQEkuadpPbh4Lvw1MV9WNDGbV5yd5ejPOvTN4kXt1a4hfT7I+yakMlqveVVW3J/m5JD/TvNh5C4Ogv72qrgM+CLwhyelJTsrgReynznN7dZwM9J6qqing3wBvYrD8MM1grZeqOgL8crN9M4MX5d7TuuwXGfyxfojBO2bu8A4OBmut08CnktzS9HtUx9L+gMHSyT7gJuAShh6HVfVt4CUMguxm4PkMXoSdyx8xeBH4W8D727el5X8wCJaDzenY+8LXNfXfyuCJ7s1VdWVzjJ4NnMfgP4s3AxdW1T8OD9zheP05sL5598flVXUN8Ibm+r7B4K2DH1/g9n0V+HJzG97Wuu7bGTzRPK5pvwF4K3DGHGOdCvwNg9dfDjJYEnl2M9YhYDODJ7xZBrPrl3LH++dtDF4T+DqD5bNj76h5CPAuBmH+BeDDDJ4gYDBTXwFcw+D+fBfw0Hlur45T7riMqnuqJJcxeKHtPy53Lbp7SnIlg3e1vHW5a9FoztAlqScMdEnqCZdcJKknnKFLUk8s2weLVq5cWWvXrl2uq5ekE9JVV111Q1VNjmpbtkBfu3YtU1NTy3X1knRCSjLnp7pdcpGknjDQJaknDHRJ6gkDXZJ6wkCXpJ4w0CWpJwx0SeoJA12SesJAl6SeOCF/U3Tt9vcvdwm6G/vKa5+53CVIy8IZuiT1hIEuST1hoEtSTxjoktQTBrok9YSBLkk9YaBLUk90CvQkm5IcSDKdZPuI9jOSvC/JZ5LsT3LR+EuVJM1nwUBPMgFcCpwHrAcuSLJ+qNuLgWuq6rHAucAbkqwYc62SpHl0maFvBKar6mBVHQF2A5uH+hRwWpIA9wNuAo6OtVJJ0ry6BPoq4FBre6bZ1/Ym4KeAw8DngN+tqh8MD5Rka5KpJFOzs7PHWbIkaZQugZ4R+2po++nA1cCZwOOANyU5/U4XqtpZVRuqasPk5OQiS5UkzadLoM8Aa1rbqxnMxNsuAt5TA9PAl4FHj6dESVIXXQJ9H7AuydnNC51bgD1Dfa4FfgEgyYOBRwEHx1moJGl+C359blUdTXIxcAUwAeyqqv1JtjXtO4BXAZcl+RyDJZqXVdUNS1i3JGlIp+9Dr6q9wN6hfTta5w8DvzTe0iRJi+EnRSWpJwx0SeoJA12SesJAl6SeMNAlqScMdEnqCQNdknrCQJeknjDQJaknDHRJ6gkDXZJ6wkCXpJ4w0CWpJwx0SeoJA12SesJAl6Se6BToSTYlOZBkOsn2Ee0vTXJ1c/p8ktuTPHD85UqS5rJgoCeZAC4FzgPWAxckWd/uU1Wvq6rHVdXjgJcDH66qm5agXknSHLrM0DcC01V1sKqOALuBzfP0vwB4xziKkyR11yXQVwGHWtszzb47SXIqsAl49xztW5NMJZmanZ1dbK2SpHl0CfSM2Fdz9D0f+Phcyy1VtbOqNlTVhsnJya41SpI66BLoM8Ca1vZq4PAcfbfgcoskLYsugb4PWJfk7CQrGIT2nuFOSc4Angq8d7wlSpK6OHmhDlV1NMnFwBXABLCrqvYn2da072i6Phf4YFXdtmTVSpLmtGCgA1TVXmDv0L4dQ9uXAZeNqzBJ0uL4SVFJ6gkDXZJ6wkCXpJ4w0CWpJwx0SeoJA12SesJAl6SeMNAlqScMdEnqCQNdknrCQJeknjDQJaknDHRJ6gkDXZJ6wkCXpJ7oFOhJNiU5kGQ6yfY5+pyb5Ook+5N8eLxlSpIWsuAPXCSZAC4Fnsbg90X3JdlTVde0+twfeDOwqaquTfKgJapXkjSHLjP0jcB0VR2sqiPAbmDzUJ/nA++pqmsBqur68ZYpSVpIl0BfBRxqbc80+9oeCTwgyZVJrkpy4aiBkmxNMpVkanZ29vgqliSN1CXQM2JfDW2fDPws8Ezg6cB/SvLIO12oamdVbaiqDZOTk4suVpI0ty4/Ej0DrGltrwYOj+hzQ1XdBtyW5CPAY4EvjqVKSdKCuszQ9wHrkpydZAWwBdgz1Oe9wFOSnJzkVOCJwBfGW6okaT4LztCr6miSi4ErgAlgV1XtT7Ktad9RVV9I8j+BzwI/AN5aVZ9fysIlSXfUZcmFqtoL7B3at2No+3XA68ZXmiRpMfykqCT1hIEuST1hoEtSTxjoktQTBrok9YSBLkk9YaBLUk8Y6JLUEwa6JPWEgS5JPWGgS1JPGOiS1BMGuiT1hIEuST1hoEtSTxjoktQTnQI9yaYkB5JMJ9k+ov3cJN9KcnVzesX4S5UkzWfBXyxKMgFcCjyNwY9B70uyp6quGer60ap61hLUKEnqoMsMfSMwXVUHq+oIsBvYvLRlSZIWq0ugrwIOtbZnmn3DnpzkM0k+kOQxowZKsjXJVJKp2dnZ4yhXkjSXLoGeEftqaPvvgbOq6rHAfwMuHzVQVe2sqg1VtWFycnJRhUqS5tcl0GeANa3t1cDhdoequqWqbm3O7wVOSbJybFVKkhbUJdD3AeuSnJ1kBbAF2NPukOQhSdKc39iMe+O4i5UkzW3Bd7lU1dEkFwNXABPArqran2Rb074DeB7w20mOAt8FtlTV8LKMJGkJLRjo8MNllL1D+3a0zr8JeNN4S5MkLYafFJWknjDQJaknDHRJ6gkDXZJ6wkCXpJ4w0CWpJwx0SeoJA12SesJAl6SeMNAlqScMdEnqCQNdknrCQJeknjDQJaknDHRJ6olOgZ5kU5IDSaaTbJ+n3xOS3J7keeMrUZLUxYKBnmQCuBQ4D1gPXJBk/Rz9LmHwy0aSpLtYlxn6RmC6qg5W1RFgN7B5RL/fAd4NXD/G+iRJHXUJ9FXAodb2TLPvh5KsAp4L7GAeSbYmmUoyNTs7u9haJUnz6BLoGbFv+Aeg3wi8rKpun2+gqtpZVRuqasPk5GTHEiVJXXT5kegZYE1rezVweKjPBmB3EoCVwDOSHK2qy8dRpCRpYV0CfR+wLsnZwNeALcDz2x2q6uxj55NcBvytYS5Jd60FA72qjia5mMG7VyaAXVW1P8m2pn3edXNJ0l2jywydqtoL7B3aNzLIq+qFP35ZkqTF8pOiktQTBrok9YSBLkk9YaBLUk8Y6JLUEwa6JPWEgS5JPWGgS1JPGOiS1BMGuiT1hIEuST1hoEtSTxjoktQTBrok9YSBLkk90SnQk2xKciDJdJLtI9o3J/lskqubH4H+F+MvVZI0nwV/4CLJBHAp8DQGvy+6L8meqrqm1e1/A3uqqpKcA7wTePRSFCxJGq3LDH0jMF1VB6vqCLAb2NzuUFW3VlU1m/cFCknSXapLoK8CDrW2Z5p9d5DkuUn+EXg/8BvjKU+S1FWXQM+IfXeagVfV31TVo4HnAK8aOVCytVljn5qdnV1UoZKk+XUJ9BlgTWt7NXB4rs5V9RHg4UlWjmjbWVUbqmrD5OTkoouVJM2tS6DvA9YlOTvJCmALsKfdIckjkqQ5/3hgBXDjuIuVJM1twXe5VNXRJBcDVwATwK6q2p9kW9O+A/hXwIVJvg98F/jV1oukkqS7wIKBDlBVe4G9Q/t2tM5fAlwy3tIkSYvhJ0UlqScMdEnqCQNdknrCQJeknjDQJaknDHRJ6gkDXZJ6wkCXpJ4w0CWpJwx0SeoJA12SesJAl6SeMNAlqScMdEnqCQNdknrCQJeknugU6Ek2JTmQZDrJ9hHtv5bks83pE0keO/5SJUnzWTDQk0wAlwLnAeuBC5KsH+r2ZeCpVXUO8Cpg57gLlSTNr8sMfSMwXVUHq+oIsBvY3O5QVZ+oqpubzU8Bq8dbpiRpIV0CfRVwqLU90+yby28CHxjVkGRrkqkkU7Ozs92rlCQtqEugZ8S+Gtkx+TkGgf6yUe1VtbOqNlTVhsnJye5VSpIWdHKHPjPAmtb2auDwcKck5wBvBc6rqhvHU54kqasuM/R9wLokZydZAWwB9rQ7JHkY8B7gX1fVF8dfpiRpIQvO0KvqaJKLgSuACWBXVe1Psq1p3wG8AvgJ4M1JAI5W1YalK1uSNKzLkgtVtRfYO7RvR+v8bwG/Nd7SJEmL4SdFJaknDHRJ6gkDXZJ6wkCXpJ4w0CWpJwx0SeqJTm9blLR4a7e/f7lL0N3UV177zCUZ1xm6JPWEgS5JPWGgS1JPGOiS1BMGuiT1hIEuST1hoEtSTxjoktQTnQI9yaYkB5JMJ9k+ov3RST6Z5HtJ/mD8ZUqSFrLgJ0WTTACXAk9j8Pui+5LsqaprWt1uAl4CPGcpipQkLazLDH0jMF1VB6vqCLAb2NzuUFXXV9U+4PtLUKMkqYMugb4KONTanmn2LVqSrUmmkkzNzs4ezxCSpDl0CfSM2FfHc2VVtbOqNlTVhsnJyeMZQpI0hy6BPgOsaW2vBg4vTTmSpOPVJdD3AeuSnJ1kBbAF2LO0ZUmSFmvBd7lU1dEkFwNXABPArqran2Rb074jyUOAKeB04AdJ/i2wvqpuWbrSJUltnX7goqr2AnuH9u1onf86g6UYSdIy8ZOiktQTBrok9YSBLkk9YaBLUk8Y6JLUEwa6JPWEgS5JPWGgS1JPGOiS1BMGuiT1hIEuST1hoEtSTxjoktQTBrok9YSBLkk9YaBLUk90CvQkm5IcSDKdZPuI9iT506b9s0keP/5SJUnzWTDQk0wAlwLnAeuBC5KsH+p2HrCuOW0F/mzMdUqSFtBlhr4RmK6qg1V1BNgNbB7qsxn4yxr4FHD/JA8dc62SpHl0+U3RVcCh1vYM8MQOfVYB17U7JdnKYAYPcGuSA4uqVnNZCdyw3EXcXeSS5a5AI/gYbfkxH6NnzdXQJdAzYl8dRx+qaiews8N1ahGSTFXVhuWuQ5qLj9G7RpcllxlgTWt7NXD4OPpIkpZQl0DfB6xLcnaSFcAWYM9Qnz3Ahc27XZ4EfKuqrhseSJK0dBZccqmqo0kuBq4AJoBdVbU/ybamfQewF3gGMA18B7ho6UrWCC5j6e7Ox+hdIFV3WuqWJJ2A/KSoJPWEgS5JPWGgn8AW+koGabkl2ZXk+iSfX+5a7gkM9BNUx69kkJbbZcCm5S7insJAP3F1+UoGaVlV1UeAm5a7jnsKA/3ENdfXLUi6hzLQT1ydvm5B0j2HgX7i8usWJN2BgX7i6vKVDJLuQQz0E1RVHQWOfSXDF4B3VtX+5a1KuqMk7wA+CTwqyUyS31zumvrMj/5LUk84Q5eknjDQJaknDHRJ6gkDXZJ6wkCXpJ4w0CWpJwx0SeqJ/w9oUA9SvFxuRwAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"y = df_train.sepse.value_counts()/df_train.sepse.value_counts().sum() #frequencia absoluta\n",
"plt.bar(['0','1'],y)\n",
"plt.title('Frequencia absoluta de Sepse')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Rq97bUIvMgR3"
},
"source": [
"## Pre processamento"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "3TaUFzkjMhgf",
"outputId": "d409deb9-fd8a-498b-908f-e46cb96af5bb"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Porcentagem de linhas duplicadas: 70.31\n"
]
}
],
"source": [
"nLinhas , nColunas = df_train.shape\n",
"\n",
"dupl = df_train.duplicated().sum()/nLinhas\n",
"\n",
"print('Porcentagem de linhas duplicadas:', round(dupl*100,2))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 252
},
"id": "f98ldTEfMh3F",
"outputId": "8ad619dd-192d-45e9-b0d7-da77a1580f7f"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Frequencia treino:\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Qtd Nan \n",
" Qtd Nan % \n",
" \n",
" \n",
" \n",
" \n",
" temperatura \n",
" 2145 \n",
" 12.66 \n",
" \n",
" \n",
" pulso \n",
" 2736 \n",
" 16.14 \n",
" \n",
" \n",
" respiracao \n",
" 13734 \n",
" 81.03 \n",
" \n",
" \n",
" pa_min \n",
" 8466 \n",
" 49.95 \n",
" \n",
" \n",
" pa_max \n",
" 8468 \n",
" 49.96 \n",
" \n",
" \n",
" sepse \n",
" 0 \n",
" 0.00 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Qtd Nan Qtd Nan %\n",
"temperatura 2145 12.66\n",
"pulso 2736 16.14\n",
"respiracao 13734 81.03\n",
"pa_min 8466 49.95\n",
"pa_max 8468 49.96\n",
"sepse 0 0.00"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Verificado a quantidade de NaN por atributo\n",
"nan_train= pd.DataFrame()\n",
"nan_train['Qtd Nan'] = df_train.isna().sum()\n",
"nan_train['Qtd Nan %'] = round(100*df_train.isna().sum()/len(df_train),2)\n",
"print('Frequencia treino:')\n",
"nan_train.head(6)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 221
},
"id": "I-ZDOJeNMp_9",
"outputId": "8fefacb9-891c-4f50-9c5c-6447cac1bed9"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Frequencia teste:\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Qtd Nan \n",
" Qtd Nan % \n",
" \n",
" \n",
" \n",
" \n",
" temperatura \n",
" 903 \n",
" 12.37 \n",
" \n",
" \n",
" pulso \n",
" 1183 \n",
" 16.21 \n",
" \n",
" \n",
" respiracao \n",
" 6174 \n",
" 84.58 \n",
" \n",
" \n",
" pa_min \n",
" 3864 \n",
" 52.93 \n",
" \n",
" \n",
" pa_max \n",
" 3865 \n",
" 52.95 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Qtd Nan Qtd Nan %\n",
"temperatura 903 12.37\n",
"pulso 1183 16.21\n",
"respiracao 6174 84.58\n",
"pa_min 3864 52.93\n",
"pa_max 3865 52.95"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Verificado a quantidade de NaN por atributo\n",
"nan_test= pd.DataFrame()\n",
"nan_test['Qtd Nan'] = df_test.isna().sum()\n",
"nan_test['Qtd Nan %'] = round(100*df_test.isna().sum()/len(df_test),2)\n",
"print('Frequencia teste:')\n",
"nan_test.head(6)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "HlhSQ0UUhn4r"
},
"source": [
"Pelo fato de haver uma quantidade grande de dados faltantes no conjunto de treino e teste, decidimos por utilizar o KNN Imputer para atribuirmos valores aos dados faltantes. O KNN Imputer, como o nome já informa, preenche os valores ausentes usando a abordagem k-vizinhos mais próximos."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Y2ELbkwwiqcG"
},
"source": [
"Antes de aplicarmos tal método de preenchimento, iremos verificar e tratar os atributos da base."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9fWPknVhUuyM"
},
"source": [
"### Tratando o campo temperatura"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"id": "G_mzXSAv6T8Y"
},
"outputs": [],
"source": [
"treino = df_train.copy()\n",
"teste = df_test.copy()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "7vbEP-ceULWt",
"outputId": "26afac32-3efe-4161-d106-cb8f85f7255b"
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 36. , 38. , 37. , 35. , 32. , nan, 39. , 35.8,\n",
" 0. , 34. , 36.7, 35.6, 356. , 40. , 131. , 36.8,\n",
" 35.1, 36.1, 35.4, 33.6, 37.6, 36.6, 35.5, 36.5,\n",
" 3602. , 37.2, 6. , 378. , 36.9, -35. , 36.2, 36.3,\n",
" 37.7, 33. , 85. , 336. , 368. , 37.5, 35.3, 35.7,\n",
" 35.9, 36.4])"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.temperatura.unique()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "nudz60jfAYcs",
"outputId": "fb58e7ae-51bb-4676-9f1c-7c9c8729dd2c"
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 36. , 37. , nan, 39. , 36.6, 38. , 36.7, 35. , 36.3,\n",
" 37.2, 34. , 33. , 0. , 37.5, 35.8, 37.7, 36.8, 35.3,\n",
" 36.1, 35.4, 35.5, 36.5, 37.6, 36.2, 35.1, 35.6, 36.9,\n",
" 378. , 36.4, -35. , 40. , 35.7, 35.9, 33.6])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"teste.temperatura.unique()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Kd1cuqCbUzed"
},
"source": [
"Alguns valores como 3602, 378, por exemplo, entende-se que foi algum erro na hora de passar os dados para a planilha, todavia, iremos atribuir nan a esses vaores."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"id": "X7vpm4C0VFVa"
},
"outputs": [],
"source": [
"inf = 9e999 #Tranforma em infinito\n",
"treino.temperatura.replace({3602:inf-inf, 378:inf-inf, 336:inf-inf, 368:inf-inf, 356:inf-inf}, inplace=True)\n",
"teste.temperatura.replace(378, np.nan, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"id": "vFFmKhjS4fNu"
},
"outputs": [],
"source": [
"treino.temperatura = treino.temperatura.apply(abs)\n",
"teste.temperatura = teste.temperatura.apply(abs)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "vwBNNFpb5LAi"
},
"source": [
"Substituir temperatura nula por nan"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 419
},
"id": "h3-Si2HV4ml-",
"outputId": "a15461c1-0811-4cf3-c67e-14d99dde9178"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 151 \n",
" 0.0 \n",
" 121.0 \n",
" NaN \n",
" 180.0 \n",
" 90.0 \n",
" 1 \n",
" \n",
" \n",
" 1155 \n",
" 0.0 \n",
" 77.0 \n",
" NaN \n",
" 129.0 \n",
" 85.0 \n",
" 0 \n",
" \n",
" \n",
" 2115 \n",
" 0.0 \n",
" 84.0 \n",
" NaN \n",
" 109.0 \n",
" 81.0 \n",
" 0 \n",
" \n",
" \n",
" 2121 \n",
" 0.0 \n",
" 98.0 \n",
" NaN \n",
" 145.0 \n",
" 91.0 \n",
" 0 \n",
" \n",
" \n",
" 2328 \n",
" 0.0 \n",
" 94.0 \n",
" NaN \n",
" 130.0 \n",
" 81.0 \n",
" 0 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 16268 \n",
" 0.0 \n",
" 87.0 \n",
" 18.0 \n",
" 90.0 \n",
" 57.0 \n",
" 0 \n",
" \n",
" \n",
" 16278 \n",
" 0.0 \n",
" 87.0 \n",
" 18.0 \n",
" 90.0 \n",
" 57.0 \n",
" 0 \n",
" \n",
" \n",
" 16462 \n",
" 0.0 \n",
" 87.0 \n",
" 18.0 \n",
" 90.0 \n",
" 57.0 \n",
" 0 \n",
" \n",
" \n",
" 16513 \n",
" 0.0 \n",
" 87.0 \n",
" 18.0 \n",
" 90.0 \n",
" 57.0 \n",
" 0 \n",
" \n",
" \n",
" 16752 \n",
" 0.0 \n",
" 87.0 \n",
" 18.0 \n",
" 90.0 \n",
" 57.0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
194 rows × 6 columns
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"151 0.0 121.0 NaN 180.0 90.0 1\n",
"1155 0.0 77.0 NaN 129.0 85.0 0\n",
"2115 0.0 84.0 NaN 109.0 81.0 0\n",
"2121 0.0 98.0 NaN 145.0 91.0 0\n",
"2328 0.0 94.0 NaN 130.0 81.0 0\n",
"... ... ... ... ... ... ...\n",
"16268 0.0 87.0 18.0 90.0 57.0 0\n",
"16278 0.0 87.0 18.0 90.0 57.0 0\n",
"16462 0.0 87.0 18.0 90.0 57.0 0\n",
"16513 0.0 87.0 18.0 90.0 57.0 0\n",
"16752 0.0 87.0 18.0 90.0 57.0 0\n",
"\n",
"[194 rows x 6 columns]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.query('temperatura == 0')"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"id": "HJNGH7b35hFP"
},
"outputs": [],
"source": [
"treino.temperatura.replace(0, np.nan, inplace=True)\n",
"teste.temperatura.replace(0, np.nan, inplace=True)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3VD1YuWV50wz"
},
"source": [
"Substituir temperatura menor que 20 e maior ou igual a 45 por NaN"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
},
"id": "vqywDzh45rb_",
"outputId": "cc182a13-9668-4847-f8d4-04606cbe1966"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 577 \n",
" 131.0 \n",
" 106.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 1 \n",
" \n",
" \n",
" 1843 \n",
" 6.0 \n",
" 101.0 \n",
" NaN \n",
" 158.0 \n",
" 89.0 \n",
" 0 \n",
" \n",
" \n",
" 4451 \n",
" 6.0 \n",
" 87.0 \n",
" NaN \n",
" 131.0 \n",
" 80.0 \n",
" 0 \n",
" \n",
" \n",
" 7123 \n",
" 85.0 \n",
" 85.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 11772 \n",
" 85.0 \n",
" 85.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"577 131.0 106.0 NaN NaN NaN 1\n",
"1843 6.0 101.0 NaN 158.0 89.0 0\n",
"4451 6.0 87.0 NaN 131.0 80.0 0\n",
"7123 85.0 85.0 NaN NaN NaN 0\n",
"11772 85.0 85.0 NaN NaN NaN 0"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.query('temperatura < 20 or temperatura >= 45')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"id": "J8_mGsl056jH"
},
"outputs": [],
"source": [
"treino['temperatura'].values[treino['temperatura'].values < 20] = inf-inf\n",
"treino['temperatura'].values[treino['temperatura'].values >= 45] = inf-inf\n",
"\n",
"teste['temperatura'].values[teste['temperatura'].values < 20] = inf-inf\n",
"teste['temperatura'].values[teste['temperatura'].values >= 45] = inf-inf"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "JaHDmeRqcIBW",
"outputId": "c5a8b8c2-b031-4678-b1e7-a617a68077bf"
},
"outputs": [
{
"data": {
"text/plain": [
"array([36. , 38. , 37. , 35. , 32. , nan, 39. , 35.8, 34. , 36.7, 35.6,\n",
" 40. , 36.8, 35.1, 36.1, 35.4, 33.6, 37.6, 36.6, 35.5, 36.5, 37.2,\n",
" 36.9, 36.2, 36.3, 37.7, 33. , 37.5, 35.3, 35.7, 35.9, 36.4])"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.temperatura.unique()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "enrTvyvgBBMQ",
"outputId": "32518b21-0d2c-4efe-ffe5-c287fd298a73"
},
"outputs": [
{
"data": {
"text/plain": [
"array([36. , 37. , nan, 39. , 36.6, 38. , 36.7, 35. , 36.3, 37.2, 34. ,\n",
" 33. , 37.5, 35.8, 37.7, 36.8, 35.3, 36.1, 35.4, 35.5, 36.5, 37.6,\n",
" 36.2, 35.1, 35.6, 36.9, 36.4, 40. , 35.7, 35.9, 33.6])"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"teste.temperatura.unique()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "kEUZyuL2c17z",
"outputId": "fea4112c-f4f3-4c45-d7c0-882388b989b4"
},
"outputs": [
{
"data": {
"text/plain": [
"count 14596.000000\n",
"mean 36.187188\n",
"std 0.922318\n",
"min 32.000000\n",
"25% 36.000000\n",
"50% 36.000000\n",
"75% 36.700000\n",
"max 40.000000\n",
"Name: temperatura, dtype: float64"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.temperatura.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "dLhbB8KT9M8c"
},
"source": [
"### Tratando o campo pulso"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "JVIyNBjI9Mex",
"outputId": "f3bfac25-d898-452e-8c68-37a50840469e"
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 117., 105., 118., 136., 104., 83., 91., 99., 67.,\n",
" 116., 107., 72., 85., 68., 102., 110., 66., 139.,\n",
" 74., 101., 120., 71., 144., nan, 96., 108., 92.,\n",
" 98., 94., 100., 114., 78., 87., 97., 106., 111.,\n",
" 115., 112., 64., 90., 103., 76., 124., 80., 119.,\n",
" 140., 75., 137., 82., 125., 134., 109., 122., 79.,\n",
" 95., 121., 130., 65., 69., 113., 73., 77., 131.,\n",
" 88., 81., 93., 126., 84., 56., 128., 170., 60.,\n",
" 38., 154., 123., 138., 155., 86., 127., 70., 52.,\n",
" 89., 132., 152., 62., 135., 61., 149., 179., 150.,\n",
" 183., 51., 165., 63., 143., 44., 129., 151., 156.,\n",
" 158., 55., 59., 153., 174., 186., 42., 40., 145.,\n",
" 32., 133., 43., 142., 54., 160., 53., 58., 57.,\n",
" 1000., 50., 46., 168., 30., 47., 49., 175., 11.,\n",
" 10., 166., 147., 0., 41., 163., 48., 177., 192.,\n",
" 157., 841., 148., 180., 200., 36., 159., 162.])"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.pulso.unique() #batimento cardíaco"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "IeoyGVC3BeBd",
"outputId": "dfa70521-35eb-4cfc-85c6-99f69bdc75a3"
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 93., 107., 90., 69., 71., nan, 104., 103., 99.,\n",
" 75., 82., 73., 84., 51., 98., 77., 76., 66.,\n",
" 80., 110., 97., 64., 100., 138., 81., 91., 74.,\n",
" 89., 96., 87., 135., 56., 95., 102., 88., 111.,\n",
" 101., 86., 68., 78., 83., 94., 128., 85., 62.,\n",
" 122., 119., 126., 42., 72., 79., 61., 92., 70.,\n",
" 112., 118., 120., 57., 54., 140., 105., 113., 114.,\n",
" 106., 131., 67., 55., 115., 63., 65., 125., 121.,\n",
" 155., 144., 130., 123., 109., 10., 142., 116., 169.,\n",
" 129., 136., 108., 117., 60., 127., 133., 44., 59.,\n",
" 137., 52., 124., 180., 139., 35., 50., 58., 38.,\n",
" 177., 156., 145., 47., 168., 132., 1116., 163., 43.,\n",
" 53., 46., 49., 178., 165., 134., 149., 704., 0.,\n",
" 11., 150., 170., 148., 151., 166., 147., 143., 160.,\n",
" 159., 158., 174., 153., 157., 162., 179., 183., 152.,\n",
" 23.])"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"teste.pulso.unique()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 173
},
"id": "1uYmTtHs97sH",
"outputId": "25e25c26-3e37-478e-eda5-e89e240d7788"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 1616 \n",
" 36.0 \n",
" 1000.0 \n",
" NaN \n",
" 120.0 \n",
" 66.0 \n",
" 0 \n",
" \n",
" \n",
" 6326 \n",
" 36.0 \n",
" 841.0 \n",
" NaN \n",
" 128.0 \n",
" 74.0 \n",
" 0 \n",
" \n",
" \n",
" 8027 \n",
" 36.0 \n",
" 200.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 14473 \n",
" 36.0 \n",
" 841.0 \n",
" NaN \n",
" 128.0 \n",
" 74.0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"1616 36.0 1000.0 NaN 120.0 66.0 0\n",
"6326 36.0 841.0 NaN 128.0 74.0 0\n",
"8027 36.0 200.0 NaN NaN NaN 0\n",
"14473 36.0 841.0 NaN 128.0 74.0 0"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.query('pulso >= 200') #vamos considerar maior ou igual a 200 nan"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"id": "jlNzj7Wx_1tc"
},
"outputs": [],
"source": [
"treino['pulso'].values[treino['pulso'].values >= 200] = inf-inf\n",
"teste['pulso'].values[teste['pulso'].values >= 200] = inf-inf"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 483
},
"id": "A8VOhSK2AThE",
"outputId": "823811db-5d64-49dc-c3fd-8368c552e6b1"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 4172 \n",
" 36.0 \n",
" 0.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 5523 \n",
" NaN \n",
" 0.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 5912 \n",
" 35.0 \n",
" 0.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 6087 \n",
" 35.0 \n",
" 0.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 6952 \n",
" 37.0 \n",
" 0.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 7058 \n",
" 34.0 \n",
" 0.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 7910 \n",
" 37.0 \n",
" 0.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 10652 \n",
" 38.0 \n",
" 0.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 11120 \n",
" 36.0 \n",
" 0.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 11156 \n",
" NaN \n",
" 0.0 \n",
" NaN \n",
" 90.0 \n",
" 48.0 \n",
" 0 \n",
" \n",
" \n",
" 11942 \n",
" 34.0 \n",
" 0.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 13009 \n",
" NaN \n",
" 0.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 15104 \n",
" NaN \n",
" 0.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 15441 \n",
" 37.0 \n",
" 0.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"4172 36.0 0.0 NaN NaN NaN 0\n",
"5523 NaN 0.0 NaN NaN NaN 0\n",
"5912 35.0 0.0 NaN NaN NaN 0\n",
"6087 35.0 0.0 NaN NaN NaN 0\n",
"6952 37.0 0.0 NaN NaN NaN 0\n",
"7058 34.0 0.0 NaN NaN NaN 0\n",
"7910 37.0 0.0 NaN NaN NaN 0\n",
"10652 38.0 0.0 NaN NaN NaN 0\n",
"11120 36.0 0.0 NaN NaN NaN 0\n",
"11156 NaN 0.0 NaN 90.0 48.0 0\n",
"11942 34.0 0.0 NaN NaN NaN 0\n",
"13009 NaN 0.0 NaN NaN NaN 0\n",
"15104 NaN 0.0 NaN NaN NaN 0\n",
"15441 37.0 0.0 NaN NaN NaN 0"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.query('pulso == 0') #vamos considerar valor médio arredondado"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"id": "ta0DhOlj-2Ba"
},
"outputs": [],
"source": [
"treino.pulso.replace(0, np.nan, inplace=True)\n",
"teste.pulso.replace(0, np.nan, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "POka3YI6CIXC",
"outputId": "b8fca6ad-2725-4eb5-c7dc-07f14c520b82"
},
"outputs": [
{
"data": {
"text/plain": [
"array([117., 105., 118., 136., 104., 83., 91., 99., 67., 116., 107.,\n",
" 72., 85., 68., 102., 110., 66., 139., 74., 101., 120., 71.,\n",
" 144., nan, 96., 108., 92., 98., 94., 100., 114., 78., 87.,\n",
" 97., 106., 111., 115., 112., 64., 90., 103., 76., 124., 80.,\n",
" 119., 140., 75., 137., 82., 125., 134., 109., 122., 79., 95.,\n",
" 121., 130., 65., 69., 113., 73., 77., 131., 88., 81., 93.,\n",
" 126., 84., 56., 128., 170., 60., 38., 154., 123., 138., 155.,\n",
" 86., 127., 70., 52., 89., 132., 152., 62., 135., 61., 149.,\n",
" 179., 150., 183., 51., 165., 63., 143., 44., 129., 151., 156.,\n",
" 158., 55., 59., 153., 174., 186., 42., 40., 145., 32., 133.,\n",
" 43., 142., 54., 160., 53., 58., 57., 50., 46., 168., 30.,\n",
" 47., 49., 175., 11., 10., 166., 147., 41., 163., 48., 177.,\n",
" 192., 157., 148., 180., 36., 159., 162.])"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.pulso.unique()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 419
},
"id": "1FLgXNF5qN32",
"outputId": "f806f9fd-6d31-45ad-bfda-47925e700a62"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 36.0 \n",
" 117.0 \n",
" NaN \n",
" 113.0 \n",
" 72.0 \n",
" 1 \n",
" \n",
" \n",
" 2 \n",
" 38.0 \n",
" 118.0 \n",
" NaN \n",
" 110.0 \n",
" 70.0 \n",
" 1 \n",
" \n",
" \n",
" 3 \n",
" 37.0 \n",
" 136.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 1 \n",
" \n",
" \n",
" 9 \n",
" 37.0 \n",
" 116.0 \n",
" NaN \n",
" 111.0 \n",
" 70.0 \n",
" 1 \n",
" \n",
" \n",
" 15 \n",
" 37.0 \n",
" 110.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 1 \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 10317 \n",
" 36.0 \n",
" 116.0 \n",
" NaN \n",
" 123.0 \n",
" 77.0 \n",
" 1 \n",
" \n",
" \n",
" 10322 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
" 10324 \n",
" 36.8 \n",
" 121.0 \n",
" 12.0 \n",
" 138.0 \n",
" 89.0 \n",
" 1 \n",
" \n",
" \n",
" 10325 \n",
" 36.8 \n",
" 110.0 \n",
" 19.0 \n",
" 141.0 \n",
" 61.0 \n",
" 1 \n",
" \n",
" \n",
" 10336 \n",
" 36.6 \n",
" 138.0 \n",
" 20.0 \n",
" 119.0 \n",
" 75.0 \n",
" 1 \n",
" \n",
" \n",
"
\n",
"
742 rows × 6 columns
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"0 36.0 117.0 NaN 113.0 72.0 1\n",
"2 38.0 118.0 NaN 110.0 70.0 1\n",
"3 37.0 136.0 NaN NaN NaN 1\n",
"9 37.0 116.0 NaN 111.0 70.0 1\n",
"15 37.0 110.0 NaN NaN NaN 1\n",
"... ... ... ... ... ... ...\n",
"10317 36.0 116.0 NaN 123.0 77.0 1\n",
"10322 NaN 131.0 39.0 82.0 37.0 1\n",
"10324 36.8 121.0 12.0 138.0 89.0 1\n",
"10325 36.8 110.0 19.0 141.0 61.0 1\n",
"10336 36.6 138.0 20.0 119.0 75.0 1\n",
"\n",
"[742 rows x 6 columns]"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.query('pulso >= 110 and sepse == 1') "
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "hLrx608GKqij"
},
"source": [
"### Tratando o campo respiração"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "l1YryOdmL7-p"
},
"source": [
""
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "01Fzf3eGKqK0",
"outputId": "95991511-e470-4ee2-f6e1-1f2b068ad5d2"
},
"outputs": [
{
"data": {
"text/plain": [
"array([nan, 15., 33., 17., 22., 19., 16., 12., 23., 26., 27., 28., 10.,\n",
" 39., 20., 21., 24., 14., 11., 40., 25., 18., 13., 0., 29.])"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.respiracao.unique()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 111
},
"id": "zhc5fyRwNEFa",
"outputId": "999e7055-32df-43da-8c9a-8fc4d31bc1a1"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 5308 \n",
" 36.7 \n",
" 103.0 \n",
" 0.0 \n",
" 121.0 \n",
" 70.0 \n",
" 0 \n",
" \n",
" \n",
" 13783 \n",
" 36.7 \n",
" 103.0 \n",
" 0.0 \n",
" 121.0 \n",
" 70.0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"5308 36.7 103.0 0.0 121.0 70.0 0\n",
"13783 36.7 103.0 0.0 121.0 70.0 0"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.query('respiracao == 0') #zero igual a nan"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"id": "AAKbroooNQea"
},
"outputs": [],
"source": [
"treino.respiracao.replace(0, np.nan, inplace=True)\n",
"teste.respiracao.replace(0, np.nan, inplace=True)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "AGWvPyxDMZ5U"
},
"source": [
"### Tratando o campo pressão minima e máxima"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "13DX24wWn6PT"
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "NveAD2IoGmW_"
},
"source": [
"Através dos valores, entendemos que pressão mínima da base é a sistólica e pressão máxima, Diastólica."
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "LmwrVmmJMpV1",
"outputId": "88660508-384b-499d-bd93-8ddcb1af72e3"
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 113., nan, 110., 153., 111., 126., 107., 185., 127.,\n",
" 133., 97., 191., 130., 170., 143., 147., 120., 90.,\n",
" 122., 138., 152., 137., 142., 119., 125., 115., 204.,\n",
" 150., 128., 117., 118., 160., 100., 155., 149., 114.,\n",
" 159., 123., 108., 102., 145., 180., 136., 140., 169.,\n",
" 178., 144., 103., 105., 109., 88., 134., 101., 164.,\n",
" 167., 89., 135., 132., 148., 139., 131., 94., 200.,\n",
" 182., 86., 81., 146., 186., 121., 106., 93., 112.,\n",
" 189., 154., 187., 163., 129., 124., 141., 116., 10.,\n",
" 98., 156., 166., 151., 175., 92., 79., 104., 212.,\n",
" 85., 220., 91., 209., 95., 165., 157., 161., 171.,\n",
" 158., 82., 74., 168., 173., 96., 179., 162., 172.,\n",
" 99., 75., 219., 184., 190., 197., 230., 177., 202.,\n",
" 174., 15., 224., 208., 236., 40., 198., 199., 203.,\n",
" 12., 215., 201., 11., 217., 192., 181., 210., 195.,\n",
" 183., 188., 19., 176., 225., 233., 193., 16., 231.,\n",
" 80., 14., 213., 211., 18., 194., 69., 222., 83.,\n",
" 73., 67., 242., 245., 0., 17., 1460., 20.])"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.pa_min.unique()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 111
},
"id": "c_G2SaouP71e",
"outputId": "a270b354-2534-4adc-f894-5acb846ef270"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 11982 \n",
" NaN \n",
" 63.0 \n",
" 15.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0 \n",
" \n",
" \n",
" 13753 \n",
" NaN \n",
" 63.0 \n",
" 15.0 \n",
" 0.0 \n",
" 0.0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"11982 NaN 63.0 15.0 0.0 0.0 0\n",
"13753 NaN 63.0 15.0 0.0 0.0 0"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.query('pa_min == 0') #zero igual a nan"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"id": "e4RNXEYrQHZI"
},
"outputs": [],
"source": [
"treino.pa_min.replace(0, np.nan, inplace=True)\n",
"teste.pa_min.replace(0, np.nan, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 607
},
"id": "Adr1WAHuQPog",
"outputId": "e384a97b-5faf-425a-d06f-c7c87b096093"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 1566 \n",
" 36.0 \n",
" 100.0 \n",
" NaN \n",
" 230.0 \n",
" 120.0 \n",
" 0 \n",
" \n",
" \n",
" 1765 \n",
" 35.0 \n",
" 85.0 \n",
" NaN \n",
" 224.0 \n",
" 101.0 \n",
" 0 \n",
" \n",
" \n",
" 2452 \n",
" NaN \n",
" 175.0 \n",
" NaN \n",
" 236.0 \n",
" 116.0 \n",
" 0 \n",
" \n",
" \n",
" 3083 \n",
" 36.0 \n",
" 75.0 \n",
" NaN \n",
" 230.0 \n",
" 100.0 \n",
" 0 \n",
" \n",
" \n",
" 3153 \n",
" 36.0 \n",
" 84.0 \n",
" NaN \n",
" 230.0 \n",
" 112.0 \n",
" 0 \n",
" \n",
" \n",
" 4751 \n",
" 35.0 \n",
" 68.0 \n",
" NaN \n",
" 225.0 \n",
" 97.0 \n",
" 0 \n",
" \n",
" \n",
" 4987 \n",
" 36.0 \n",
" 83.0 \n",
" NaN \n",
" 233.0 \n",
" 105.0 \n",
" 0 \n",
" \n",
" \n",
" 5273 \n",
" 36.0 \n",
" 80.0 \n",
" NaN \n",
" 231.0 \n",
" 140.0 \n",
" 0 \n",
" \n",
" \n",
" 7658 \n",
" 35.0 \n",
" 90.0 \n",
" NaN \n",
" 222.0 \n",
" 118.0 \n",
" 0 \n",
" \n",
" \n",
" 8749 \n",
" NaN \n",
" 85.0 \n",
" NaN \n",
" 242.0 \n",
" 122.0 \n",
" 0 \n",
" \n",
" \n",
" 10457 \n",
" 35.0 \n",
" 88.0 \n",
" NaN \n",
" 245.0 \n",
" 100.0 \n",
" 0 \n",
" \n",
" \n",
" 11334 \n",
" 36.0 \n",
" 83.0 \n",
" NaN \n",
" 233.0 \n",
" 105.0 \n",
" 0 \n",
" \n",
" \n",
" 11792 \n",
" 35.0 \n",
" 88.0 \n",
" NaN \n",
" 245.0 \n",
" 100.0 \n",
" 0 \n",
" \n",
" \n",
" 14329 \n",
" 36.0 \n",
" 100.0 \n",
" NaN \n",
" 230.0 \n",
" 120.0 \n",
" 0 \n",
" \n",
" \n",
" 14534 \n",
" 36.0 \n",
" 90.0 \n",
" NaN \n",
" 1460.0 \n",
" 100.0 \n",
" 0 \n",
" \n",
" \n",
" 15247 \n",
" 35.0 \n",
" 88.0 \n",
" NaN \n",
" 245.0 \n",
" 100.0 \n",
" 0 \n",
" \n",
" \n",
" 16735 \n",
" 36.0 \n",
" 84.0 \n",
" NaN \n",
" 230.0 \n",
" 112.0 \n",
" 0 \n",
" \n",
" \n",
" 16838 \n",
" 35.0 \n",
" 88.0 \n",
" NaN \n",
" 245.0 \n",
" 100.0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"1566 36.0 100.0 NaN 230.0 120.0 0\n",
"1765 35.0 85.0 NaN 224.0 101.0 0\n",
"2452 NaN 175.0 NaN 236.0 116.0 0\n",
"3083 36.0 75.0 NaN 230.0 100.0 0\n",
"3153 36.0 84.0 NaN 230.0 112.0 0\n",
"4751 35.0 68.0 NaN 225.0 97.0 0\n",
"4987 36.0 83.0 NaN 233.0 105.0 0\n",
"5273 36.0 80.0 NaN 231.0 140.0 0\n",
"7658 35.0 90.0 NaN 222.0 118.0 0\n",
"8749 NaN 85.0 NaN 242.0 122.0 0\n",
"10457 35.0 88.0 NaN 245.0 100.0 0\n",
"11334 36.0 83.0 NaN 233.0 105.0 0\n",
"11792 35.0 88.0 NaN 245.0 100.0 0\n",
"14329 36.0 100.0 NaN 230.0 120.0 0\n",
"14534 36.0 90.0 NaN 1460.0 100.0 0\n",
"15247 35.0 88.0 NaN 245.0 100.0 0\n",
"16735 36.0 84.0 NaN 230.0 112.0 0\n",
"16838 35.0 88.0 NaN 245.0 100.0 0"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.query('pa_min > 220') #recebe nan"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"id": "p54aMfdHRPBk"
},
"outputs": [],
"source": [
"treino['pa_min'].values[treino['pa_min'].values > 220] = inf-inf\n",
"teste['pa_min'].values[teste['pa_min'].values > 220] = inf-inf"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"id": "6VwqbRv1RbKw",
"outputId": "5e29532e-81b4-4b11-e28d-ad8a3a2167c8"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 442 \n",
" 37.0 \n",
" 125.0 \n",
" NaN \n",
" 10.0 \n",
" 75.0 \n",
" 1 \n",
" \n",
" \n",
" 519 \n",
" 36.0 \n",
" 106.0 \n",
" NaN \n",
" 79.0 \n",
" 52.0 \n",
" 1 \n",
" \n",
" \n",
" 884 \n",
" 37.0 \n",
" 117.0 \n",
" NaN \n",
" 74.0 \n",
" 56.0 \n",
" 1 \n",
" \n",
" \n",
" 1118 \n",
" NaN \n",
" 51.0 \n",
" NaN \n",
" 75.0 \n",
" 52.0 \n",
" 0 \n",
" \n",
" \n",
" 1706 \n",
" 36.0 \n",
" 71.0 \n",
" NaN \n",
" 15.0 \n",
" 89.0 \n",
" 0 \n",
" \n",
" \n",
" 2474 \n",
" 35.0 \n",
" 74.0 \n",
" NaN \n",
" 40.0 \n",
" 69.0 \n",
" 0 \n",
" \n",
" \n",
" 2739 \n",
" 36.0 \n",
" 95.0 \n",
" NaN \n",
" 12.0 \n",
" 69.0 \n",
" 0 \n",
" \n",
" \n",
" 3108 \n",
" 38.0 \n",
" 85.0 \n",
" NaN \n",
" 11.0 \n",
" 75.0 \n",
" 0 \n",
" \n",
" \n",
" 3270 \n",
" 35.0 \n",
" 84.0 \n",
" NaN \n",
" 11.0 \n",
" 79.0 \n",
" 0 \n",
" \n",
" \n",
" 3292 \n",
" 35.0 \n",
" 92.0 \n",
" NaN \n",
" 15.0 \n",
" 84.0 \n",
" 0 \n",
" \n",
" \n",
" 4278 \n",
" 37.0 \n",
" 117.0 \n",
" NaN \n",
" 74.0 \n",
" 56.0 \n",
" 0 \n",
" \n",
" \n",
" 4496 \n",
" 36.0 \n",
" 84.0 \n",
" NaN \n",
" 19.0 \n",
" 82.0 \n",
" 0 \n",
" \n",
" \n",
" 4863 \n",
" 36.0 \n",
" 100.0 \n",
" NaN \n",
" 12.0 \n",
" 80.0 \n",
" 0 \n",
" \n",
" \n",
" 4961 \n",
" 36.0 \n",
" 67.0 \n",
" NaN \n",
" 10.0 \n",
" 71.0 \n",
" 0 \n",
" \n",
" \n",
" 5106 \n",
" 36.0 \n",
" 62.0 \n",
" NaN \n",
" 16.0 \n",
" 90.0 \n",
" 0 \n",
" \n",
" \n",
" 5522 \n",
" 36.0 \n",
" 81.0 \n",
" NaN \n",
" 14.0 \n",
" 10.0 \n",
" 0 \n",
" \n",
" \n",
" 5636 \n",
" 35.0 \n",
" 90.0 \n",
" NaN \n",
" 11.0 \n",
" 75.0 \n",
" 0 \n",
" \n",
" \n",
" 5774 \n",
" 36.0 \n",
" 94.0 \n",
" NaN \n",
" 10.0 \n",
" 60.0 \n",
" 0 \n",
" \n",
" \n",
" 6360 \n",
" 36.0 \n",
" 100.0 \n",
" NaN \n",
" 18.0 \n",
" 93.0 \n",
" 0 \n",
" \n",
" \n",
" 7089 \n",
" 35.0 \n",
" 89.0 \n",
" NaN \n",
" 69.0 \n",
" 60.0 \n",
" 0 \n",
" \n",
" \n",
" 7401 \n",
" 36.0 \n",
" 62.0 \n",
" NaN \n",
" 18.0 \n",
" 74.0 \n",
" 0 \n",
" \n",
" \n",
" 7777 \n",
" 33.0 \n",
" 53.0 \n",
" NaN \n",
" 73.0 \n",
" 43.0 \n",
" 0 \n",
" \n",
" \n",
" 7843 \n",
" 35.0 \n",
" 180.0 \n",
" NaN \n",
" 67.0 \n",
" 43.0 \n",
" 0 \n",
" \n",
" \n",
" 8424 \n",
" 36.0 \n",
" 100.0 \n",
" NaN \n",
" 16.0 \n",
" 10.0 \n",
" 0 \n",
" \n",
" \n",
" 9777 \n",
" 37.0 \n",
" 125.0 \n",
" NaN \n",
" 10.0 \n",
" 75.0 \n",
" 1 \n",
" \n",
" \n",
" 10069 \n",
" 36.0 \n",
" 106.0 \n",
" NaN \n",
" 79.0 \n",
" 52.0 \n",
" 1 \n",
" \n",
" \n",
" 12320 \n",
" 38.0 \n",
" 85.0 \n",
" NaN \n",
" 11.0 \n",
" 75.0 \n",
" 0 \n",
" \n",
" \n",
" 13078 \n",
" 36.0 \n",
" 67.0 \n",
" NaN \n",
" 10.0 \n",
" 71.0 \n",
" 0 \n",
" \n",
" \n",
" 13548 \n",
" 33.0 \n",
" 53.0 \n",
" NaN \n",
" 73.0 \n",
" 43.0 \n",
" 0 \n",
" \n",
" \n",
" 13834 \n",
" 36.0 \n",
" 85.0 \n",
" NaN \n",
" 17.0 \n",
" 92.0 \n",
" 0 \n",
" \n",
" \n",
" 14568 \n",
" 36.0 \n",
" 62.0 \n",
" NaN \n",
" 18.0 \n",
" 74.0 \n",
" 0 \n",
" \n",
" \n",
" 15837 \n",
" 36.0 \n",
" 71.0 \n",
" NaN \n",
" 15.0 \n",
" 89.0 \n",
" 0 \n",
" \n",
" \n",
" 15936 \n",
" 36.0 \n",
" 68.0 \n",
" NaN \n",
" 20.0 \n",
" 10.0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"442 37.0 125.0 NaN 10.0 75.0 1\n",
"519 36.0 106.0 NaN 79.0 52.0 1\n",
"884 37.0 117.0 NaN 74.0 56.0 1\n",
"1118 NaN 51.0 NaN 75.0 52.0 0\n",
"1706 36.0 71.0 NaN 15.0 89.0 0\n",
"2474 35.0 74.0 NaN 40.0 69.0 0\n",
"2739 36.0 95.0 NaN 12.0 69.0 0\n",
"3108 38.0 85.0 NaN 11.0 75.0 0\n",
"3270 35.0 84.0 NaN 11.0 79.0 0\n",
"3292 35.0 92.0 NaN 15.0 84.0 0\n",
"4278 37.0 117.0 NaN 74.0 56.0 0\n",
"4496 36.0 84.0 NaN 19.0 82.0 0\n",
"4863 36.0 100.0 NaN 12.0 80.0 0\n",
"4961 36.0 67.0 NaN 10.0 71.0 0\n",
"5106 36.0 62.0 NaN 16.0 90.0 0\n",
"5522 36.0 81.0 NaN 14.0 10.0 0\n",
"5636 35.0 90.0 NaN 11.0 75.0 0\n",
"5774 36.0 94.0 NaN 10.0 60.0 0\n",
"6360 36.0 100.0 NaN 18.0 93.0 0\n",
"7089 35.0 89.0 NaN 69.0 60.0 0\n",
"7401 36.0 62.0 NaN 18.0 74.0 0\n",
"7777 33.0 53.0 NaN 73.0 43.0 0\n",
"7843 35.0 180.0 NaN 67.0 43.0 0\n",
"8424 36.0 100.0 NaN 16.0 10.0 0\n",
"9777 37.0 125.0 NaN 10.0 75.0 1\n",
"10069 36.0 106.0 NaN 79.0 52.0 1\n",
"12320 38.0 85.0 NaN 11.0 75.0 0\n",
"13078 36.0 67.0 NaN 10.0 71.0 0\n",
"13548 33.0 53.0 NaN 73.0 43.0 0\n",
"13834 36.0 85.0 NaN 17.0 92.0 0\n",
"14568 36.0 62.0 NaN 18.0 74.0 0\n",
"15837 36.0 71.0 NaN 15.0 89.0 0\n",
"15936 36.0 68.0 NaN 20.0 10.0 0"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.query('pa_min < 80')"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "86vAYmDJMng6",
"outputId": "69f62307-5e64-4658-8e66-98fe3e239867"
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 72., nan, 70., 118., 56., 76., 64., 75., 51., 92., 107.,\n",
" 87., 112., 99., 114., 59., 46., 67., 83., 82., 84., 96.,\n",
" 78., 69., 66., 123., 68., 79., 60., 102., 80., 54., 90.,\n",
" 73., 74., 65., 77., 91., 111., 62., 93., 71., 110., 63.,\n",
" 53., 58., 61., 81., 85., 48., 89., 41., 57., 100., 55.,\n",
" 86., 50., 88., 47., 52., 97., 140., 101., 126., 94., 108.,\n",
" 109., 124., 95., 106., 113., 115., 37., 45., 116., 98., 11.,\n",
" 103., 117., 120., 119., 104., 20., 49., 130., 131., 105., 10.,\n",
" 8., 121., 133., 150., 135., 43., 0., 969., 122., 44., 883.,\n",
" 704.])"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.pa_max.unique()"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 173
},
"id": "0MOC4FutSH4d",
"outputId": "e458f0e2-d457-4333-ca5d-9c1fb2c6c8cf"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 7847 \n",
" 36.0 \n",
" 94.0 \n",
" NaN \n",
" 121.0 \n",
" 0.0 \n",
" 0 \n",
" \n",
" \n",
" 10827 \n",
" 36.0 \n",
" 94.0 \n",
" NaN \n",
" 121.0 \n",
" 0.0 \n",
" 0 \n",
" \n",
" \n",
" 11982 \n",
" NaN \n",
" 63.0 \n",
" 15.0 \n",
" NaN \n",
" 0.0 \n",
" 0 \n",
" \n",
" \n",
" 13753 \n",
" NaN \n",
" 63.0 \n",
" 15.0 \n",
" NaN \n",
" 0.0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"7847 36.0 94.0 NaN 121.0 0.0 0\n",
"10827 36.0 94.0 NaN 121.0 0.0 0\n",
"11982 NaN 63.0 15.0 NaN 0.0 0\n",
"13753 NaN 63.0 15.0 NaN 0.0 0"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.query('pa_max == 0') #zero igual a nan"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"id": "3GFDKbI7SVi9"
},
"outputs": [],
"source": [
"treino.pa_max.replace(0, np.nan, inplace=True)\n",
"teste.pa_max.replace(0, np.nan, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 142
},
"id": "-ZfhndkASclt",
"outputId": "4e75a9ae-47bd-464c-d4d8-53dec3033f40"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 8605 \n",
" 36.0 \n",
" 100.0 \n",
" NaN \n",
" 145.0 \n",
" 969.0 \n",
" 0 \n",
" \n",
" \n",
" 14740 \n",
" NaN \n",
" 92.0 \n",
" NaN \n",
" 153.0 \n",
" 883.0 \n",
" 0 \n",
" \n",
" \n",
" 15696 \n",
" NaN \n",
" 126.0 \n",
" NaN \n",
" 197.0 \n",
" 704.0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"8605 36.0 100.0 NaN 145.0 969.0 0\n",
"14740 NaN 92.0 NaN 153.0 883.0 0\n",
"15696 NaN 126.0 NaN 197.0 704.0 0"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.query('pa_max > 180') #recebe nan"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"id": "m4Z9NY2-S3MB"
},
"outputs": [],
"source": [
"treino['pa_max'].values[treino['pa_max'].values > 180] = inf-inf\n",
"teste['pa_max'].values[teste['pa_max'].values > 180] = inf-inf"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fG6SooqKjxrV"
},
"source": [
"Também substituímos as variáveis contínuas da pressão por dados categóricos, distribuídos nas faixas da imagem que trouxemos logo no início, porém os resultados foram piores."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "E_JmfjhzTiYD"
},
"source": [
"Medidas para os casos de sepse positiva"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"id": "FPBiW5wmTp1v"
},
"outputs": [],
"source": [
"sepse1 = treino.query('sepse == 1')"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 297
},
"id": "Ovt4dq1FTxx_",
"outputId": "e339102a-2df0-404c-e0dc-709bc4a25808"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" count \n",
" 2336.000000 \n",
" 2406.000000 \n",
" 1046.000000 \n",
" 1692.000000 \n",
" 1691.000000 \n",
" 2575.0 \n",
" \n",
" \n",
" mean \n",
" 36.335916 \n",
" 99.599751 \n",
" 20.817400 \n",
" 125.989953 \n",
" 67.604376 \n",
" 1.0 \n",
" \n",
" \n",
" std \n",
" 1.136880 \n",
" 20.942447 \n",
" 5.250119 \n",
" 23.701485 \n",
" 16.540542 \n",
" 0.0 \n",
" \n",
" \n",
" min \n",
" 32.000000 \n",
" 32.000000 \n",
" 10.000000 \n",
" 10.000000 \n",
" 11.000000 \n",
" 1.0 \n",
" \n",
" \n",
" 25% \n",
" 35.100000 \n",
" 84.000000 \n",
" 18.000000 \n",
" 111.000000 \n",
" 53.000000 \n",
" 1.0 \n",
" \n",
" \n",
" 50% \n",
" 36.100000 \n",
" 101.000000 \n",
" 19.000000 \n",
" 124.000000 \n",
" 67.000000 \n",
" 1.0 \n",
" \n",
" \n",
" 75% \n",
" 37.000000 \n",
" 112.000000 \n",
" 22.000000 \n",
" 143.000000 \n",
" 79.000000 \n",
" 1.0 \n",
" \n",
" \n",
" max \n",
" 40.000000 \n",
" 186.000000 \n",
" 40.000000 \n",
" 220.000000 \n",
" 140.000000 \n",
" 1.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"count 2336.000000 2406.000000 1046.000000 1692.000000 1691.000000 2575.0\n",
"mean 36.335916 99.599751 20.817400 125.989953 67.604376 1.0\n",
"std 1.136880 20.942447 5.250119 23.701485 16.540542 0.0\n",
"min 32.000000 32.000000 10.000000 10.000000 11.000000 1.0\n",
"25% 35.100000 84.000000 18.000000 111.000000 53.000000 1.0\n",
"50% 36.100000 101.000000 19.000000 124.000000 67.000000 1.0\n",
"75% 37.000000 112.000000 22.000000 143.000000 79.000000 1.0\n",
"max 40.000000 186.000000 40.000000 220.000000 140.000000 1.0"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sepse1.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2_4oYkjAjjwN"
},
"source": [
"## Utilizando o KNN imputer para o preenchimento dos dados nan"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"id": "uql42hNfjhas"
},
"outputs": [],
"source": [
"#Divide the features into Independent and Dependent Variable\n",
"X = treino.drop('sepse' , axis =1)\n",
"y = treino['sepse']\n",
"y_completo = y.copy()"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"id": "fRKC-aKKijCh"
},
"outputs": [],
"source": [
"# knn imputation treino\n",
"from numpy import isnan\n",
"from sklearn.impute import KNNImputer\n",
"\n",
"# define imputer\n",
"imputer = KNNImputer()\n",
"# fit on the dataset\n",
"imputer.fit(X)\n",
"# transform the dataset\n",
"Xtrans = imputer.transform(X)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "nrQM2xSmbMRW",
"outputId": "352df3ef-0552-447d-c11f-b5d700897cf9"
},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 36. , 117. , 18. , 113. , 72. ],\n",
" [ 36. , 105. , 19. , 134.8, 85.4],\n",
" [ 38. , 118. , 18. , 110. , 70. ],\n",
" ...,\n",
" [ 35.4, 69. , 23.4, 149. , 93. ],\n",
" [ 35.2, 95. , 19. , 136. , 82. ],\n",
" [ 37. , 88. , 20. , 141.8, 63.4]])"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Xtrans"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"id": "CE_7eTrZbU4o"
},
"outputs": [],
"source": [
"#vontando treino para o tipo dataframe\n",
"basey = pd.DataFrame()\n",
"basey['sepse'] = y\n",
"basex = pd.DataFrame(Xtrans, columns=X.columns)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"id": "B7asQkcQd7eS"
},
"outputs": [],
"source": [
"#Juntando Treino pós imputação\n",
"treino_full = pd.concat([basex, basey], axis=1)\n",
"treino_completo = treino_full"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 252
},
"id": "vnXjCOAqgCoI",
"outputId": "f5deb5e3-ccb6-497e-bf46-5e09b96eb398"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Frequencia treino:\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Qtd Nan \n",
" Qtd Nan % \n",
" \n",
" \n",
" \n",
" \n",
" temperatura \n",
" 0 \n",
" 0.0 \n",
" \n",
" \n",
" pulso \n",
" 0 \n",
" 0.0 \n",
" \n",
" \n",
" respiracao \n",
" 0 \n",
" 0.0 \n",
" \n",
" \n",
" pa_min \n",
" 0 \n",
" 0.0 \n",
" \n",
" \n",
" pa_max \n",
" 0 \n",
" 0.0 \n",
" \n",
" \n",
" sepse \n",
" 0 \n",
" 0.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Qtd Nan Qtd Nan %\n",
"temperatura 0 0.0\n",
"pulso 0 0.0\n",
"respiracao 0 0.0\n",
"pa_min 0 0.0\n",
"pa_max 0 0.0\n",
"sepse 0 0.0"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Verificado a quantidade de NaN por atributo\n",
"nan_train= pd.DataFrame()\n",
"nan_train['Qtd Nan'] = treino_full.isna().sum()\n",
"nan_train['Qtd Nan %'] = round(100*treino_full.isna().sum()/len(treino_full),2)\n",
"print('Frequencia treino:')\n",
"nan_train.head(6)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"id": "fe9aFAMikgBL",
"outputId": "2590fea3-78e5-44da-92a4-a21f56267077"
},
"outputs": [
{
"data": {
"image/png": "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cevWLb07/lu3bsHc3FzXMV5K5aOMcidOnMD8+fPrbPscaTyhfJRRLiUlRUdJKiofZZQrLCzUURIiasw40niCjY1NheJ48803dZjmv5o3b16hOExNTXWY5sXRokULtGjRAhs2bNB1lAomTpyI4lJVve/HwLAp2re30rvj17eRD0nHkcYTFi5cWONjXfHz86vw2N/fv862/f7771d4/MEHH9TZtomoYQ0ePLjC46FDh9bp9lkaT2jfvj1sbGwAPBpltGvXTseJHunRoweaN28O4NEoo3v37nW27eXLl1d4vGzZslo9/6effqrxMdHz0NffL33N9emnn1Z4XJfXMwCWRpUWLlwIExMTvRlllPPz84OBgUGdjjLKlY82OMogevGVjzbqepQBADIhhKjzrRLpifJz5/p2Tr/8msYrncbW636Kk2Pwjh5f09C3XPR0HGkQEZFkLA0iIpKMpUFERJKxNIiISDKWBhERScbSICIiyVgaREQkGUuDiIgkY2kQEZFkLA0iIpKMpUFERJKxNIiISDKWBhERScbSICIiyXi7V3qp1cf9BOj58X15cbE06KU2aNAgXUegKvB9eXHx9BQREUnG0iAiIslYGkREJBlLg4iIJGNpEBGRZCwNIiKSjKVBRESSsTSIiEgylgYREUnG0iAiIslYGkREJBlLg4iIJGNpEBGRZCwNIiKSjKVBRESSsTSIiEgylgYREUnGO/cR6YqmDMXJMfW6C3VpLgCret0HNS4sDSId6NSpE+7fv4/XXnutnvdkhfbt29fzPqgxkQkhhK5DEBHRi4HXNIiISDKWBhERScbSICIiyVgaREQkGUuDiIgkY2kQEZFkLA0iIpLspf1yX1lZGTIyMnQdg4johWRtbQ1Dw8oV8dKWRkZGBgYPHqzrGEREL6SYmBi0adOm0vKX9hvhzzPSyMjIgJeXF/bs2QNra+s6Tvbs9DUXoL/ZmKt2mKt2XuZcjW6kYWhoWGVL1oa1tfVzb6M+6GsuQH+zMVftMFftNKZcvBBORESSsTSIiEgylgYREUnG0qiCmZkZ5s2bBzMzM11HqUBfcwH6m425aoe5aqcx5nppPz1FRER1jyMNIiKSjKVBRESSvbTf06itr776CsePH4dMJsO4ceMwffp0hIeHIywsDDKZDF27dsWqVavQpEkTnef64YcfsGfPHggh4OjoiMWLF0Mm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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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50D0BBcXF7z99tsAgKCgICxYsAArV67EuXPn8K9//QuZmZm4efMmSktLn9qWm5sbWrduDQBo06YNPD09YWZmBmdnZygUCjx48ADe3t5wdnbG6tWrkZWVhbS0NLz55psAgE6dOmHixIkYO3YsYmJi0L59e8NtONFjeMyB6AmPj55aaerUqdiwYQOcnJwwatQouLq6Qugw8oyVlZXGYwsL6d9jP/30E2bPno0mTZpALpfDz89Po+3Lly+jZcuW+PPPP2uxNUS1w+JA9IT09HSkp6cDeHS/4jfffBN//vknJkyYgEGDBgEA/vzzTyiVSr2s78iRIwgICMCQIUPQrl077N+/X932nj17cOLECezYsQNHjx7Fr7/+qpd1Ej0NdysRPaFly5aIj49HTk4O7OzssGTJEhw8eBATJkxAs2bNYGNjg27duiE7O1sv6wsPD8fcuXOxadMmAECXLl1w6dIl5ObmYt68eVixYgXs7OwQExODCRMm4PXXX4ejo6Ne1k1UFY7KSvSYEydOIDo6GklJScaOQmRU7DkQ1UFISAju37+vdd7atWthY2PzjBMR6Qd7DkREJMED0kREJMHiQEREEiwOREQkweJAREQSLA5ERCTB4kBERBL/DzDJpfd98e0AAAAAAElFTkSuQmCC\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for i in treino_full.drop('sepse', axis = 1).columns:\n",
"\n",
" sns.set(style=\"ticks\")\n",
"\n",
" x = treino[i]\n",
" coluna = i\n",
" mu = round(x.mean(),2) # mean of distribution\n",
" sigma = round(x.std(),2) # standard deviation of distribution\n",
"\n",
" f, (ax_box, ax_hist) = plt.subplots(2)\n",
"\n",
" sns.boxplot(x=x, ax=ax_box)\n",
" sns.histplot(x=x, ax=ax_hist)\n",
"\n",
" ax_box.set(yticks=[])\n",
" sns.despine(ax=ax_hist)\n",
" sns.despine(ax=ax_box, left=True)\n",
" ax_box.set_title('Boxplot e Histograma de {}\\n $\\mu={}$, $\\sigma={}$'.format(coluna, mu,sigma))\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "sCMYgs7wpOuM"
},
"source": [
"Pelo fato de termos obervados valores positivos e negativos para a sepse em relação às variáveis pulso, pa_min e pa_max nos valores apresentados como outlier, mas olhando a base antes do preenchiemnto dos nan, decidimos por não aumentar mais os valores a serem considerados como nan. Todavia, fica um ponto de atenção a ser tratado logo na coleta dos dados, pois nesses casos, não da para saber se de fato ocorreu o valor apresentado ou se também foi algum tipo de erro."
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 359
},
"id": "x4wmehOspvdI",
"outputId": "dbdeaf91-4575-4051-b0be-f74565457420"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 1287 \n",
" 36.0 \n",
" 135.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 1292 \n",
" 38.0 \n",
" 130.0 \n",
" NaN \n",
" 126.0 \n",
" 98.0 \n",
" 0 \n",
" \n",
" \n",
" 1303 \n",
" 36.0 \n",
" 144.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 1320 \n",
" NaN \n",
" 131.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 1358 \n",
" 35.0 \n",
" 133.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 1480 \n",
" 39.0 \n",
" 140.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 1500 \n",
" 35.0 \n",
" 154.0 \n",
" NaN \n",
" 200.0 \n",
" 100.0 \n",
" 0 \n",
" \n",
" \n",
" 1644 \n",
" 36.0 \n",
" 130.0 \n",
" NaN \n",
" 123.0 \n",
" 77.0 \n",
" 0 \n",
" \n",
" \n",
" 1679 \n",
" 36.0 \n",
" 138.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0 \n",
" \n",
" \n",
" 1695 \n",
" 36.0 \n",
" 152.0 \n",
" NaN \n",
" 202.0 \n",
" 119.0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"1287 36.0 135.0 NaN NaN NaN 0\n",
"1292 38.0 130.0 NaN 126.0 98.0 0\n",
"1303 36.0 144.0 NaN NaN NaN 0\n",
"1320 NaN 131.0 NaN NaN NaN 0\n",
"1358 35.0 133.0 NaN NaN NaN 0\n",
"1480 39.0 140.0 NaN NaN NaN 0\n",
"1500 35.0 154.0 NaN 200.0 100.0 0\n",
"1644 36.0 130.0 NaN 123.0 77.0 0\n",
"1679 36.0 138.0 NaN NaN NaN 0\n",
"1695 36.0 152.0 NaN 202.0 119.0 0"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.query('pulso >= 130 and sepse == 0').head(10) #185 linhas com sepse == 1 e 209 com sepse == 0"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 359
},
"id": "Q8rxb197qqxG",
"outputId": "88336f15-7b6f-4aa1-87ed-039ac0012f85"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 8 \n",
" 35.0 \n",
" 67.0 \n",
" NaN \n",
" 153.0 \n",
" 118.0 \n",
" 1 \n",
" \n",
" \n",
" 14 \n",
" NaN \n",
" 102.0 \n",
" NaN \n",
" 185.0 \n",
" 118.0 \n",
" 1 \n",
" \n",
" \n",
" 28 \n",
" 36.0 \n",
" 104.0 \n",
" NaN \n",
" 170.0 \n",
" 112.0 \n",
" 1 \n",
" \n",
" \n",
" 32 \n",
" 35.0 \n",
" 108.0 \n",
" NaN \n",
" 147.0 \n",
" 114.0 \n",
" 1 \n",
" \n",
" \n",
" 76 \n",
" 35.0 \n",
" 90.0 \n",
" NaN \n",
" 204.0 \n",
" 123.0 \n",
" 1 \n",
" \n",
" \n",
" 149 \n",
" 35.0 \n",
" 74.0 \n",
" NaN \n",
" 153.0 \n",
" 114.0 \n",
" 1 \n",
" \n",
" \n",
" 163 \n",
" 39.0 \n",
" 75.0 \n",
" NaN \n",
" 178.0 \n",
" 111.0 \n",
" 1 \n",
" \n",
" \n",
" 204 \n",
" 35.0 \n",
" 84.0 \n",
" NaN \n",
" 170.0 \n",
" 110.0 \n",
" 1 \n",
" \n",
" \n",
" 276 \n",
" NaN \n",
" 107.0 \n",
" NaN \n",
" 182.0 \n",
" 114.0 \n",
" 1 \n",
" \n",
" \n",
" 301 \n",
" 37.0 \n",
" 115.0 \n",
" NaN \n",
" 186.0 \n",
" 112.0 \n",
" 1 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"8 35.0 67.0 NaN 153.0 118.0 1\n",
"14 NaN 102.0 NaN 185.0 118.0 1\n",
"28 36.0 104.0 NaN 170.0 112.0 1\n",
"32 35.0 108.0 NaN 147.0 114.0 1\n",
"76 35.0 90.0 NaN 204.0 123.0 1\n",
"149 35.0 74.0 NaN 153.0 114.0 1\n",
"163 39.0 75.0 NaN 178.0 111.0 1\n",
"204 35.0 84.0 NaN 170.0 110.0 1\n",
"276 NaN 107.0 NaN 182.0 114.0 1\n",
"301 37.0 115.0 NaN 186.0 112.0 1"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.query('pa_max >= 110 and sepse == 1').head(10) #24 com sepse == 1 e 108 sepse == 0"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 173
},
"id": "YrNUj3sFsB7G",
"outputId": "0961c651-0ff7-4936-b3ac-183d9903ddc3"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 258 \n",
" 35.0 \n",
" 38.0 \n",
" NaN \n",
" 155.0 \n",
" 78.0 \n",
" 1 \n",
" \n",
" \n",
" 941 \n",
" 35.0 \n",
" 40.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 1 \n",
" \n",
" \n",
" 965 \n",
" 35.0 \n",
" 32.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 1 \n",
" \n",
" \n",
" 8931 \n",
" 35.0 \n",
" 38.0 \n",
" NaN \n",
" 155.0 \n",
" 78.0 \n",
" 1 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"258 35.0 38.0 NaN 155.0 78.0 1\n",
"941 35.0 40.0 NaN NaN NaN 1\n",
"965 35.0 32.0 NaN NaN NaN 1\n",
"8931 35.0 38.0 NaN 155.0 78.0 1"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.query('pulso <= 40 and sepse == 1').head(10) #10 sepse == 0 e 4 com sepse == 1"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 545
},
"id": "7wBnvF3xswm3",
"outputId": "7728d8c5-aed7-4628-d5a8-39959337c58a"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" temperatura \n",
" pulso \n",
" respiracao \n",
" pa_min \n",
" pa_max \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 837 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
" 1054 \n",
" 35.0 \n",
" 56.0 \n",
" NaN \n",
" 140.0 \n",
" 11.0 \n",
" 1 \n",
" \n",
" \n",
" 9004 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
" 9162 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
" 9205 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
" 9478 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
" 9520 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
" 9547 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
" 9772 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
" 9790 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
" 9947 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
" 9979 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
" 10027 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
" 10064 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
" 10098 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
" 10322 \n",
" NaN \n",
" 131.0 \n",
" 39.0 \n",
" 82.0 \n",
" 37.0 \n",
" 1 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" temperatura pulso respiracao pa_min pa_max sepse\n",
"837 NaN 131.0 39.0 82.0 37.0 1\n",
"1054 35.0 56.0 NaN 140.0 11.0 1\n",
"9004 NaN 131.0 39.0 82.0 37.0 1\n",
"9162 NaN 131.0 39.0 82.0 37.0 1\n",
"9205 NaN 131.0 39.0 82.0 37.0 1\n",
"9478 NaN 131.0 39.0 82.0 37.0 1\n",
"9520 NaN 131.0 39.0 82.0 37.0 1\n",
"9547 NaN 131.0 39.0 82.0 37.0 1\n",
"9772 NaN 131.0 39.0 82.0 37.0 1\n",
"9790 NaN 131.0 39.0 82.0 37.0 1\n",
"9947 NaN 131.0 39.0 82.0 37.0 1\n",
"9979 NaN 131.0 39.0 82.0 37.0 1\n",
"10027 NaN 131.0 39.0 82.0 37.0 1\n",
"10064 NaN 131.0 39.0 82.0 37.0 1\n",
"10098 NaN 131.0 39.0 82.0 37.0 1\n",
"10322 NaN 131.0 39.0 82.0 37.0 1"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"treino.query('pa_max < 40 and sepse == 1') #16 com sepse == 1 e 14 com sepse == 0"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "9S4du3u-g6rf"
},
"source": [
"## Treino e teste"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"id": "Zy7d615vhqlZ"
},
"outputs": [],
"source": [
"X = treino_full.drop('sepse' , axis =1)\n",
"y = treino_full['sepse']\n",
"X = X.to_numpy()\n",
"y = y.to_numpy()"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"id": "mMcJL1Aahn8v"
},
"outputs": [],
"source": [
"# Importa bibliotecas\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, stratify = y, random_state=42)"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"id": "NOqSg8Pniv0-"
},
"outputs": [],
"source": [
"from sklearn.preprocessing import MinMaxScaler\n",
"\n",
"MinMax = MinMaxScaler()\n",
"\n",
"X_train = MinMax .fit_transform(X_train)\n",
"X_test = MinMax .transform(X_test)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "tS4G6uH3rh_o"
},
"source": [
"## Regressão Logística"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "QIl3TsIrpmuJ",
"outputId": "1ede9433-1556-4ea6-f525-e41fbdac7048"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Acuracia média: 0.5253959907920419\n",
"Precisão média: 0.6583524278348761\n",
"F1 médio: 0.5141035935161595\n"
]
}
],
"source": [
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.model_selection import StratifiedKFold\n",
"from sklearn.metrics import balanced_accuracy_score\n",
"from sklearn.metrics import accuracy_score\n",
"from sklearn.metrics import f1_score\n",
"from sklearn.metrics import precision_score\n",
"\n",
"precisao = []\n",
"f1 = []\n",
"acuracia = []\n",
"\n",
"cv = StratifiedKFold(n_splits=10, shuffle=True, random_state=1)\n",
"\n",
"for train_index, test_index in cv.split(X, y):\n",
" x_train, x_test = X[train_index], X[test_index]\n",
" y_train, y_test = y[train_index], y[test_index]\n",
" model = LogisticRegression()\n",
" model.fit(x_train,y_train)\n",
" y_pred = model.predict(x_test)\n",
"\n",
" precisao.append(precision_score(y_test, y_pred, average=\"macro\"))\n",
" f1.append(f1_score(y_test, y_pred, average=\"macro\"))\n",
" acuracia.append(balanced_accuracy_score(y_test, y_pred))\n",
"print('Acuracia média: ', np.mean(acuracia))\n",
"print('Precisão média: ', np.mean(precisao))\n",
"print('F1 médio: ', np.mean(f1))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "wcRIYhMJl4EV"
},
"source": [
"## Naive Bayes"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "I8FbiFTRl6pE",
"outputId": "df8a9bbe-a829-454d-97e5-cafa13949415"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Acuracia média: 0.5833666999524743\n",
"Precisão média: 0.6585220325685529\n",
"F1 médio: 0.5997136272100843\n"
]
}
],
"source": [
"from sklearn.naive_bayes import GaussianNB \n",
"\n",
"precisao = []\n",
"f1 = []\n",
"acuracia = []\n",
"\n",
"cv = StratifiedKFold(n_splits=10, shuffle=True, random_state=1)\n",
"\n",
"for train_index, test_index in cv.split(X, y):\n",
" x_train, x_test = X[train_index], X[test_index]\n",
" y_train, y_test = y[train_index], y[test_index]\n",
" model = GaussianNB()\n",
" model.fit(x_train,y_train)\n",
" y_pred = model.predict(x_test)\n",
"\n",
" precisao.append(precision_score(y_test, y_pred, average=\"macro\"))\n",
" f1.append(f1_score(y_test, y_pred, average=\"macro\"))\n",
" acuracia.append(balanced_accuracy_score(y_test, y_pred))\n",
"print('Acuracia média: ', np.mean(acuracia))\n",
"print('Precisão média: ', np.mean(precisao))\n",
"print('F1 médio: ', np.mean(f1))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "zUYcEQECmgjr"
},
"source": [
"## Random forest"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "YNRbbSeYmiVq",
"outputId": "6d6e5745-606a-440d-99b8-c1ae27e547ca"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Acuracia média: 0.6619836318079815\n",
"Precisão média: 0.7124411235618712\n",
"F1 médio: 0.6808835483339327\n"
]
}
],
"source": [
"from sklearn.ensemble import RandomForestClassifier\n",
"\n",
"precisao = []\n",
"f1 = []\n",
"acuracia = []\n",
"\n",
"cv = StratifiedKFold(n_splits=10, shuffle=True, random_state=1)\n",
"\n",
"for train_index, test_index in cv.split(X, y):\n",
" x_train, x_test = X[train_index], X[test_index]\n",
" y_train, y_test = y[train_index], y[test_index]\n",
" model = RandomForestClassifier()\n",
" model.fit(x_train,y_train)\n",
" y_pred = model.predict(x_test)\n",
"\n",
" precisao.append(precision_score(y_test, y_pred, average=\"macro\"))\n",
" f1.append(f1_score(y_test, y_pred, average=\"macro\"))\n",
" acuracia.append(balanced_accuracy_score(y_test, y_pred))\n",
"print('Acuracia média: ', np.mean(acuracia))\n",
"print('Precisão média: ', np.mean(precisao))\n",
"print('F1 médio: ', np.mean(f1))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "zLDQtjXPnVN7"
},
"source": [
"## KNN"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "uH2XEKcWnWfl",
"outputId": "3b89f55a-714a-4187-f5c8-0be2710ee074"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Acuracia média: 0.6175641714353243\n",
"Precisão média: 0.7199765038567818\n",
"F1 médio: 0.6417681902289986\n"
]
}
],
"source": [
"from sklearn.neighbors import KNeighborsClassifier\n",
"\n",
"precisao = []\n",
"f1 = []\n",
"acuracia = []\n",
"\n",
"cv = StratifiedKFold(n_splits=10, shuffle=True, random_state=1)\n",
"\n",
"for train_index, test_index in cv.split(X, y):\n",
" x_train, x_test = X[train_index], X[test_index]\n",
" y_train, y_test = y[train_index], y[test_index]\n",
" model = KNeighborsClassifier(n_neighbors= 20)\n",
" model.fit(x_train,y_train)\n",
" y_pred = model.predict(x_test)\n",
"\n",
" precisao.append(precision_score(y_test, y_pred, average=\"macro\"))\n",
" f1.append(f1_score(y_test, y_pred, average=\"macro\"))\n",
" acuracia.append(balanced_accuracy_score(y_test, y_pred))\n",
"print('Acuracia média: ', np.mean(acuracia))\n",
"print('Precisão média: ', np.mean(precisao))\n",
"print('F1 médio: ', np.mean(f1))"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Kv_yDFnXtwJ6"
},
"source": [
"Preenchendo os NAs do teste com o KNNImputer"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"id": "6ZZ-760yFnCO"
},
"outputs": [],
"source": [
"# knn imputation teste\n",
"from numpy import isnan\n",
"from sklearn.impute import KNNImputer\n",
"\n",
"imputer = KNNImputer()\n",
"# fit on the dataset\n",
"imputer.fit(teste)\n",
"# transform the dataset\n",
"Xtransteste = imputer.transform(teste)\n",
"\n",
"#Teste pós imputação\n",
"teste = pd.DataFrame(Xtransteste, columns = teste.columns)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "eXQ0ifJut2WD"
},
"source": [
"## Submetendo os resultados no Kaggle usando o modelo de classificação: Floresta Aleatória"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"id": "ZNXPJlWRt9C4"
},
"outputs": [
{
"data": {
"text/plain": [
"0 6718\n",
"1 582\n",
"Name: sepse, dtype: int64"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"RF_model = RandomForestClassifier()\n",
"X = treino_completo.drop('sepse', axis =1)\n",
"y = y_completo\n",
"\n",
"RF_model.fit(X,y)\n",
"\n",
"y_pred = RF_model.predict(teste) \n",
"y_pred = np.array(y_pred, dtype = int)\n",
"prediction = pd.DataFrame()\n",
"prediction['id'] = id\n",
"prediction['sepse'] = y_pred\n",
"\n",
"prediction['sepse'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"id": "ihs-55hov3ZJ"
},
"outputs": [],
"source": [
"prediction.to_csv('RFsimples.csv', index = False)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "AJcamxM4xs9g"
},
"source": [
"0.91411 Kaggle foi nossa melhor pontuação"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"id": "vFn2WBRfv-_P"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" id \n",
" sepse \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 1 \n",
" 0 \n",
" \n",
" \n",
" 1 \n",
" 2 \n",
" 0 \n",
" \n",
" \n",
" 2 \n",
" 3 \n",
" 0 \n",
" \n",
" \n",
" 3 \n",
" 4 \n",
" 0 \n",
" \n",
" \n",
" 4 \n",
" 5 \n",
" 0 \n",
" \n",
" \n",
" 5 \n",
" 6 \n",
" 0 \n",
" \n",
" \n",
" 6 \n",
" 7 \n",
" 0 \n",
" \n",
" \n",
" 7 \n",
" 8 \n",
" 0 \n",
" \n",
" \n",
" 8 \n",
" 9 \n",
" 0 \n",
" \n",
" \n",
" 9 \n",
" 10 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" id sepse\n",
"0 1 0\n",
"1 2 0\n",
"2 3 0\n",
"3 4 0\n",
"4 5 0\n",
"5 6 0\n",
"6 7 0\n",
"7 8 0\n",
"8 9 0\n",
"9 10 0"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"prediction.head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "H6vWdpi_9ae3"
},
"source": [
"## Submetendo os resultados no Kaggle usando o modelo de classificação: KNN"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"id": "FoZ_snM29eTQ"
},
"outputs": [
{
"data": {
"text/plain": [
"0 6715\n",
"1 585\n",
"Name: sepse, dtype: int64"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"KNN_model = KNeighborsClassifier(n_neighbors= 20)\n",
"X = treino_completo.drop('sepse', axis =1)\n",
"y = y_completo\n",
"\n",
"KNN_model.fit(X,y)\n",
"\n",
"y_pred = KNN_model.predict(teste) \n",
"y_pred = np.array(y_pred, dtype = int)\n",
"prediction = pd.DataFrame()\n",
"prediction['id'] = id\n",
"prediction['sepse'] = y_pred\n",
"\n",
"prediction['sepse'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"id": "owDXsUu5-H4x"
},
"outputs": [],
"source": [
"prediction.to_csv('KNN20.csv', index = False)"
]
}
],
"metadata": {
"colab": {
"collapsed_sections": [],
"name": "Final - Sepse.ipynb",
"provenance": []
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 1
}